LE
action

AJUDA URGENTE SCRIPT

Por leonardo macedo, 08 de dez. de 2015 em Scripts

8
1.5k
08 de dezembro de 2015 às 23:03

por favor alguem me ajuda com esse erro

 

Lua Script Error: [Action Interface]
data/actions/scripts/chestsys.lua:onUse
data/actions/scripts/chestsys.lua:9: attempt to index a nil value
stack traceback:
[C]: in function '__index'
data/actions/scripts/chestsys.lua:9: in function <data/actions/scripts/c
hestsys.lua:5>
chestsys.lua abaixo

local chests = {
[6000] = {storage = 8000, item = 2494, amount = 1}, -- demon armor
}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
local v = chests[item.uid]
if player:getStorageValue(v.storage) ~= -1 then
return player:sendTextMessage(MESSAGE_INFO_DESCR, "Voce ja fez essa quest.")
elseif player:getFreeCapacity() < (Item(v.item):getWeight() * v.amount) then
return player:sendTextMessage(MESSAGE_INFO_DESCR, "Voce nao tem cap.")
end
if ItemType(v.item):isStackable() or v.amount == 1 then
player:addItem(v.item, v.amount)
else
for i = 1, v.amount do
player:addItem(v.item, 1)
end
end
player:setStorageValue(v.storage, 1)
return player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Voce achou uma recompensa.")
end

 

CaronteC
08 de dezembro de 2015 às 23:15

Mude

elseif player:getFreeCapacity() < (Item(v.item):getWeight() * v.amount) then
Para

elseif player:getFreeCapacity() < (v.item:getWeight() * v.amount) then
Se não funcionar tente

elseif true then
Veja se o erro persiste.
09 de dezembro de 2015 às 00:09

Mude

elseif player:getFreeCapacity() < (Item(v.item):getWeight() * v.amount) then
Para

elseif player:getFreeCapacity() < (v.item:getWeight() * v.amount) then
Se não funcionar tente

elseif true then
Veja se o erro persiste.

 

Então eu coloquei o primeiro deu erro, ai depois coloquei o outro e agora fica falando, Voce não tem cap, mais ja tentei com player com god e da só essa mensagem e não recebo o item.

CaronteC
09 de dezembro de 2015 às 10:40

Então eu coloquei o primeiro deu erro, ai depois coloquei o outro e agora fica falando, Voce não tem cap, mais ja tentei com player com god e da só essa mensagem e não recebo o item.

 

Ops nem me liguei, coloca false no lugar do true

 

 

 

Esse não pegou?

elseif player:getFreeCapacity() < (v.item:getWeight() * v.amount) then 

Tente mudar:

elseif player:getFreeCapacity() < (v.item:getWeight() * v.amount) then

para

elseif player:getFreeCapacity() < ((v.item:getWeight()) * v.amount) then

Se eu não me engano, não precisa de multiplicação, essa função já tem ela embutida...

getItemWeight(item, 1)
10 de dezembro de 2015 às 21:19

 

 

Ops nem me liguei, coloca false no lugar do true

 

 

 

Esse não pegou?

elseif player:getFreeCapacity() < (v.item:getWeight() * v.amount) then 

Tente mudar:

elseif player:getFreeCapacity() < (v.item:getWeight() * v.amount) then

para

elseif player:getFreeCapacity() < ((v.item:getWeight()) * v.amount) then

Se eu não me engano, não precisa de multiplicação, essa função já tem ela embutida...

getItemWeight(item, 1)

poxa mano, agora deu esse erro

 

Lua Script Error: [Action Interface]
data/actions/scripts/chestsys.lua:onUse
data/actions/scripts/chestsys.lua:9: attempt to index field 'item' (a number val
ue)
stack traceback:
[C]: in function '__index'
data/actions/scripts/chestsys.lua:9: in function <data/actions/scripts/c
hestsys.lua:5>

@up

Lucas CPL
10 de dezembro de 2015 às 22:08
Melhor resposta

 

 

elseif player:getFreeCapacity() < (Item(v.item):getWeight() * v.amount) then

Mude para:

  elseif player:getFreeCapacity() < (ItemType(v.item):getWeight() * v.amount) then
10 de dezembro de 2015 às 22:25

Mano, funcionou, muito obrigado, obrigado mesmo!

2 semanas depois...
CaronteC
19 de dezembro de 2015 às 12:14

Tópico Movido
Este tópico foi movido de "OTServSuporte OTServSuporte Scripting"
para "OTServSuporte OTServSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".